﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Services;
using System.Web.UI;
using System.Web.UI.HtmlControls;
using System.Web.UI.WebControls;
using BE_CruzDelSur;
using BR_CruzDelSur;
using BR_CruzDelSur.Interfaces;

namespace WebCruzDelSur
{
    public partial class OrdenPago : System.Web.UI.Page
    {
        IBR_Util util = new BR_Util();
        IBR_Carga carga = new BR_Carga();
        IBR_Pago pago = new BR_Pago();
        IBR_ProgramacionRuta programacionRuta = new BR_ProgramacionRuta();
        IBR_Producto producto = new BR_Producto();
        IBR_Cliente cliente = new BR_Cliente();
        public static List<BE_Producto> lstProd = new List<BE_Producto>();

        [WebMethod]
        public static List<BE_Producto> ObtenerProductos()
        {
            return lstProd;
        }

        protected void Page_Load(object sender, EventArgs e)
        {
            if (HttpContext.Current.Session["Usuario"] == null)
            {
                lblMensaje.Text = "Debe autenticarse en el sistema. ";
                divContenedor.Visible = false;
                return;
            }

            if (Request.QueryString["CodigoCarga"] == null)
            {
                divContenedor.Visible = false;
                lblMensaje.Text = "El código de carga ingresado no es válido";
                return;
            }

            string CodigoCarga = Request.QueryString["CodigoCarga"].ToString();
            BE_Carga entidad = carga.f_obtenerCarga(CodigoCarga);
            BE_Pago entPago = pago.f_obtenerPagoXCarga(CodigoCarga);

            if (entidad == null || entPago == null)
            {
                divContenedor.Visible = false;
                lblMensaje.Text = "El código de carga ingresado no es válido ó no existe una orden de pago generada";
                return;
            }

            lblCodigoCarga.Text = entidad.secuenciaCarga;

            txtDocIdeCli.Text = entidad.DNIClienteOrigen;
            
            txtLargo.Text = entidad.Largo.ToString();
            txtAncho.Text = entidad.Ancho.ToString();
            txtPeso.Text = entidad.Peso.ToString();
            txtProfundidad.Text = entidad.Profundidad.ToString();
            ddlEstado.Text = util.f_BuscarUtilXCodigo(entidad.EstadoCarga, "ES").Nombre;
            ddlTipoCarga.Text = util.f_BuscarUtilXCodigo(entidad.TipoCarga.ToString(), "TC").Nombre;
            ddlTipoPago.Text = util.f_BuscarUtilXCodigo(entidad.TipoPago.ToString(), "TP").Nombre; 

            txtObservaciones.Text = entidad.Observacion;
            
            BE_ProgramacionRuta pr = programacionRuta.f_BuscaProgramacionXCodigo(entidad.CodigoProgramacionRuta);

            lblAgencia.Text = pr.NombreAgencia;
            lblTransporte.Text = pr.TipoTransporte;
            lblTipoServicio.Text = pr.TipoServicio;
            lblDireccionAgencia.Text = pr.DireccionAgencia;
            lblFechaDestino.Text = pr.FechaDestino + " " + pr.HoraDestino;

            BE_Cliente co = cliente.f_BuscaClienteDNI(entidad.DNIClienteOrigen);
            lblNombreCliente.Text = co.Nombres + " " + co.Apellidos;
            lblDireccionCliente.Text = co.Direccion;
            
            lstProd = producto.f_ListarProductos(entidad.CodigoCarga);

            if (entidad.TipoCarga == 3)
            {
                divProductos.Visible = true;
            }

            HtmlTableRow tr = null;
            HtmlTableCell tc = null;

            if (lstProd != null && lstProd.Count() > 0)
            {
                tr = new HtmlTableRow();

                tc = new HtmlTableCell();
                tc.InnerHtml = "Producto";
                tr.Cells.Add(tc);
                tc = new HtmlTableCell();
                tc.InnerHtml = "Descripción";
                tr.Cells.Add(tc);
                tablaProducto.Rows.Add(tr);

                foreach (var item in lstProd)
                {
                    tr = new HtmlTableRow();
                    tc = new HtmlTableCell();
                    tc.InnerHtml = item.Nombre;
                    tr.Cells.Add(tc);
                    tc = new HtmlTableCell();
                    tc.InnerHtml = item.Descripcion;
                    tr.Cells.Add(tc);
                    tablaProducto.Rows.Add(tr);
                }
            }

            tr = new HtmlTableRow();

            tc = new HtmlTableCell();
            tc.InnerHtml = "Servicio";
            tc.Width = "300px";
            tr.Cells.Add(tc);
            tc = new HtmlTableCell();
            tc.InnerHtml = "Monto";
            tc.Width = "100px";
            tr.Cells.Add(tc);
            tablaOrdenPago.Rows.Add(tr);


            string texto = "Servicio de transporte de carga";

            if (entidad.TipoCarga == 3)
                texto += " de tipo frágil";

            if (entidad.ProgramacionRuta.TipoServicio == "EXPRESS")
                texto += " con tipo de servicio EXPRESS";

            if(Metodos.costo_minimo == entPago.Monto)
                texto += " con tipo de pago de monto mínimo";

            tr = new HtmlTableRow();
            tc = new HtmlTableCell();
            tc.InnerHtml = texto;
            tc.Width = "300px";
            tr.Cells.Add(tc);
            tc = new HtmlTableCell();
            tc.InnerHtml = entPago.Monto.ToString();
            tc.Width = "100px";
            tr.Cells.Add(tc);
            tablaOrdenPago.Rows.Add(tr);

            tr = new HtmlTableRow();
            tc = new HtmlTableCell();
            tc.InnerHtml = "Total a pagar";
            tc.Width = "300px";
            tr.Cells.Add(tc);
            tc = new HtmlTableCell();
            tc.InnerHtml = entPago.Monto.ToString();
            tc.Width = "100px";
            tr.Cells.Add(tc);
            tablaOrdenPago.Rows.Add(tr);

            String strJavascriptFunctions = "window.print();";
            ClientScript.RegisterStartupScript(this.GetType(), "Alerta", strJavascriptFunctions, true);
        }       
    }
}